package multiplex.view;

import javax.swing.JButton;
import java.awt.Container;   
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;   
import java.awt.event.ActionListener;    
import java.awt.event.KeyEvent;
import java.beans.PropertyVetoException;
import java.text.ParseException;
import java.util.Calendar;
import java.util.List;

import javax.swing.DefaultListModel;
import javax.swing.JFormattedTextField;   
import javax.swing.JLabel;    
import javax.swing.JList;
import javax.swing.JOptionPane;

import multiplex.facade.Facade;
import multiplex.model.Filme;

public class IFTelaBuscaFilmes extends InternalFramePrincipal{


    private JLabel labelNome;   
    private JFormattedTextField textoNome;   
    private JList lista;
    private JButton botaoBuscar;
    private JButton botaoRemover;
	private JButton botaoAlterar;
	private Facade fachada;
	private List<Filme> filmes;
	
    public IFTelaBuscaFilmes() {   
        super("Busca e Remoção de Filmes");
        fachada= new Facade();
        final Container conteudo = getContentPane();   
        conteudo.setLayout(new GridBagLayout());
        labelNome = new JLabel("Nome");     
        textoNome = new JFormattedTextField();  
        lista = new JList();
        botaoBuscar = new JButton("Buscar");   
        botaoBuscar.setMnemonic(KeyEvent.VK_ENTER); 
        botaoAlterar = new JButton("Alterar");   
        botaoAlterar.setMnemonic('A'); 
        botaoRemover = new JButton("Remover");   
        botaoRemover.setMnemonic('R');      
        
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx=0;
        gbc.gridy=0;
        gbc.ipadx=5;
        gbc.ipady=5;
        conteudo.add(labelNome,gbc); 
        gbc.gridx=1;
        gbc.gridy=0;
        textoNome.setPreferredSize(new Dimension(400,30));
        conteudo.add(textoNome,gbc); 
        gbc.gridx=1;
        gbc.gridy=1;
        conteudo.add(botaoBuscar,gbc);
        gbc.gridx=1;
        gbc.gridy=2;
        lista.setPreferredSize(new Dimension(400,300));
        conteudo.add(lista,gbc);   
        gbc.gridx=1;
        gbc.gridy=3;
        conteudo.add(botaoRemover,gbc);
        gbc.gridx=1;
        gbc.gridy=4;
        conteudo.add(botaoAlterar,gbc);  
        
       
        botaoBuscar.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent arg0) {
			
				DefaultListModel listaModel = new DefaultListModel( );
				
				filmes= fachada.getFilme(textoNome.getText());
				for(Filme f : filmes){
					listaModel.addElement(f);
				}
				lista.setModel( listaModel );
				if(filmes.size()==0)JOptionPane.showMessageDialog(conteudo, "Filme não encontrado","Erro", EXIT_ON_CLOSE);
			}
		});
        
        botaoRemover.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent arg0) {
				try{
				fachada.removeFilme((Filme) lista.getSelectedValue());
				JOptionPane.showMessageDialog(conteudo,"Filme removido com sucesso", "Sucesso", EXIT_ON_CLOSE);
				}
				catch (Throwable e) { 
					JOptionPane.showMessageDialog(conteudo,"Houve um erro durante a exclusão, tente novamente\nerro:"+e.getMessage(), "Erro", EXIT_ON_CLOSE);
				}
				
			}
		});
        
        botaoAlterar.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent arg0) {
				Filme temp = (Filme) lista.getSelectedValue();
				TelaInicial.alterafilmes.preencher(temp.getNome(), temp.getNomeOriginal(), temp.getLocalProducao(), Integer.toString(temp.getDuracao()), temp.getDirecao(), Integer.toString(temp.getAno().get(Calendar.YEAR)), Integer.toString(temp.getIndicacaoEtaria()), temp.getTipoFilme(), temp.getElenco(), temp.getSite(), temp.getProdutores(), temp.getDistribuidora(),temp.getId());
				for(int i=0 ; i < TelaInicial.janela.getContentPane().getComponentCount();i++)
					TelaInicial.janela.getContentPane().getComponent(i).setVisible(false);
				TelaInicial.alterafilmes.setVisible(true);
				}
		});
        
        
    }   
     
   
  
}  

